import sys
from llmlingua import PromptCompressor

def compress_chinese_prompt(prompt):
    """
    使用LLMLingua 0.2.2版本压缩中文提示词
    
    参数:
    prompt (str): 原始中文提示词
    
    返回:
    tuple: 包含压缩后的提示词和压缩率的元组
    """
    # 初始化提示压缩器 (0.2.2版本不需要model_type参数)
    compressor = PromptCompressor()
    
    # 压缩提示词 (language参数移至compress_config)
    compressed_prompt = compressor.compress(
        prompt,
        compress_config={"language": "chinese"}
    )
    
    # 计算压缩率
    original_length = len(prompt)
    compressed_length = len(compressed_prompt)
    compression_ratio = 1 - (compressed_length / original_length)
    
    return compressed_prompt, compression_ratio

def main():
    print("===== LLMlingua 0.2.2 中文提示词压缩工具 =====")
    
    while True:
        # 获取用户输入的中文提示词
        original_prompt = '人工智能在未来可能会有很多新的应用，比如在医疗、交通、教育等领域。在医疗领域，人工智能可以帮助医生进行疾病诊断和治疗方案的制定。在交通领域，它可以优化交通流量，减少拥堵。在教育领域，人工智能可以根据学生的学习进度提供个性化的学习建议。我很想知道人工智能在这些领域会带来哪些具体的变化。'
        
        # 检查是否退出程序
        if original_prompt.lower() == 'q':
            break
        
        try:
            # 压缩提示词
            compressed_prompt, ratio = compress_chinese_prompt(original_prompt)
            
            # 显示结果
            print("\n【压缩结果】")
            print(f"原始提示词 ({len(original_prompt)} 字符):")
            print(original_prompt)
            
            print(f"\n压缩后提示词 ({len(compressed_prompt)} 字符):")
            print(compressed_prompt)
            
            print(f"\n压缩率: {ratio:.2%}")
            print("-" * 50)
        
        except Exception as e:
            print(f"\n错误: {str(e)}")
            print("请确保已安装llmlingua 0.2.2版本:")
            print("pip install --no-cache-dir llmlingua==0.2.2")
    
    print("\n感谢使用LLMLingua中文提示词压缩工具！")

if __name__ == "__main__":
    main()

# # 示例文本
# text = """
# 人工智能在未来可能会有很多新的应用，比如在医疗、交通、教育等领域。在医疗领域，人工智能可以帮助医生进行疾病诊断和治疗方案的制定。在交通领域，它可以优化交通流量，减少拥堵。在教育领域，人工智能可以根据学生的学习进度提供个性化的学习建议。我很想知道人工智能在这些领域会带来哪些具体的变化。
# """

# # 生成摘要
# summary = summarize_text(text)
# print("原文：")
# print(text)
# print("\n摘要：")
# print(summary)

# from huggingface_hub import snapshot_download

# # 下载模型文件到本地目录
# local_model_path = "G:/desktop/ai网页聊天/ai-chatbot/src/"
# snapshot_download(repo_id="t5-small", repo_type="model", local_dir=local_model_path)

# import spacy

# # 加载spaCy的中文语言模型
# nlp = spacy.load("zh_core_web_sm")

# def compress_prompt(prompt):
#     # 解析文本
#     doc = nlp(prompt)
    
#     # 提取关键名词短语和动词短语
#     key_phrases = []
#     for chunk in doc.noun_chunks:
#         key_phrases.append(chunk.text)
#     for token in doc:
#         if token.pos_ == "VERB":
#             key_phrases.append(token.text)
    
#     # 去除冗余修饰词（简单示例：去除多余的形容词）
#     filtered_phrases = []
#     for phrase in key_phrases:
#         phrase_doc = nlp(phrase)
#         filtered_phrase = " ".join([token.text for token in phrase_doc if token.pos_ != "ADJ"])
#         filtered_phrases.append(filtered_phrase)
    
#     # 将关键信息组合成简洁的文本
#     compressed_prompt = " ".join(filtered_phrases)
#     return compressed_prompt

# # # 示例中文提示词
# # prompt = "一个非常非常大的房子，有一个美丽的花园和一个很大的游泳池。"
# # compressed_prompt = compress_prompt(prompt)
# # print("原始提示词:", prompt)
# # print("压缩后的提示词:", compressed_prompt)

# # 示例提示词
# prompt = "人工智能在未来可能会有很多新的应用，比如在医疗、交通、教育等领域。在医疗领域，人工智能可以帮助医生进行疾病诊断和治疗方案的制定。在交通领域，它可以优化交通流量，减少拥堵。在教育领域，人工智能可以根据学生的学习进度提供个性化的学习建议。我很想知道人工智能在这些领域会带来哪些具体的变化。"
# compressed_prompt = compress_prompt(prompt)
# print("Original Prompt:", prompt)
# print("Compressed Prompt:", compressed_prompt)